package com.coding.freemaker.demo;

import com.coding.freemaker.demo.Person;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FreeMarkerExample {
    public static void main(String[] args) throws IOException, TemplateException {
        // 步骤 1：创建一个 Person 对象列表
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 30));
        personList.add(new Person("Charlie", 22));

        // 步骤 2：配置 FreeMarker
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        // 从类路径加载模板，这个例子中，模板在根目录下。
        cfg.setClassForTemplateLoading(FreeMarkerExample.class, "/");
        cfg.setDefaultEncoding("UTF-8");

        // 步骤 3：加载模板
        Template template = cfg.getTemplate("template.ftl");

        // 步骤 4：准备数据模型（一个 Map），用于在模板中使用
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("persons", personList);

        // 步骤 5：将数据模型与模板合并，生成输出
        StringWriter writer = new StringWriter();
        template.process(dataModel, writer);
        String generatedOutput = writer.toString();

        // 步骤 6：打印生成的输出
        System.out.println(generatedOutput);
    }
}
